package vip.liux.contracts.security.core.extensions;

import java.util.Optional;

/**
 * 提供用于存储用户身份验证器信息的抽象接口。
 *
 * @param <TUser> 封装用户的类型。
 */
public interface IUserAuthenticatorKeyStore<TUser> extends IUserStore<TUser> {
    /**
     * 设置指定用户的身份验证器密钥。
     *
     * @param user 要设置密钥的用户。
     * @param key  身份验证器密钥。
     */
    void setAuthenticatorKey(TUser user, String key);

    /**
     * 获取指定用户的身份验证器密钥。
     *
     * @param user 要查询的用户。
     * @return 身份验证器密钥，若无则为 Optional.empty()。
     */
    Optional<String> getAuthenticatorKey(TUser user);
}